package com.example.sxt_practise.类加载;

/**
 * 1.引导类加载器（C编写，java获取不到）
 * 2.扩展类加载器
 * 3.应用程序类加载器
 *
 * 代理模式
 *      双亲委托机制：是代理模式的一种
 *          保证了java核心库的类型安全 ，（保证不会出现用户自己能定义java.lang.Object类的情况，因为自己定义的，会和java核心库中重复，双亲委派机制会找到核心类库中的并加载）
 *      tomcat类加载器也是代理模式，首先尝试自己加载，如果找不到再代理给父类加载器
 * @author gaofeng
 * @date 2022年06月06日 20:34
 */
public class Demo1 {
    public static void main(String[] args) {
        // 知道他们三个的关系
        System.out.println(ClassLoader.getSystemClassLoader());
        System.out.println(ClassLoader.getSystemClassLoader().getParent());
        System.out.println(ClassLoader.getSystemClassLoader().getParent().getParent());

        try {
            Class<?> demo1 = ClassLoader.getSystemClassLoader().loadClass("Demo1");
            System.out.println(demo1);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
